package com.fortune.service;

import com.fortune.dto.in.product.ProductAddDto;
import com.fortune.dto.in.product.ProductEditDto;
import com.fortune.dto.in.product.ProductListDto;
import com.fortune.dto.in.product.ProductUpAndDown;
import com.fortune.vo.channelDiscountMgt.ProductInChannealDiscountMgt;
import com.fortune.vo.productMgt.Product;

import java.math.BigDecimal;
import java.util.List;

public interface MProductInfoService {

    /**
     * 查询商品列表
     * @param companyId
     * @return
     */
    List<Product> queryProductInfoList(String companyId, ProductListDto productListDto);

    /**
     * 查询商品列表个数
     * @param companyId
     * @return
     */
    int queryProductInfoListCount(String companyId);

    /**
     * 通过名称查询该商品是否存在
     * @param companyId
     * @param name
     * @return
     */
    int queryProductByName(String companyId,String name);

    /**
     * 通过商品编号查询该商品是否存在
     * @param companyId
     * @param number
     * @return
     */
    int queryProductByNumber(String companyId,String number);

    /**
     * 通过商品id查询该商品是否存在
     */
    int queryProductByProduceId(String companyId,String produceId);

    /**
     * 新增商品
     * @param companyId
     * @param addDto
     * @return
     */
    int addProduce(String companyId, ProductAddDto addDto);

    /**
     * 删除商品
     * @param companyId
     * @param produceId
     * @return
     */
    int deleteProduce(String companyId,String produceId);

    /**
     * 编辑商品
     * @param companyId
     * @param editDto
     * @return
     */
    int editProductByProduceIdAndProduceId(String companyId,ProductEditDto editDto);

    /**
     * 商品上下架
     * @param companyId
     * @param upAndDown
     * @return
     */
    int upAndDownProduce(String companyId,ProductUpAndDown upAndDown);


    /**
     * 查询商品统一批发价（对经销商）
     * @param companyId
     * @param produceId
     * @return
     */
    BigDecimal queryProducePrice(String companyId,String produceId);

    /**
     * 查询商品编号,名称,id
     * @param companyId
     * @return
     */
    List<ProductInChannealDiscountMgt> queryProduceDiscount(String companyId);

    /**
     * 查询商品根据id
     * @param companyId
     * @param produceId
     * @return
     */
    Product queryProduceInfo(String companyId,String produceId);

    /**
     * 编辑时根据名称和编号查询是否存在
     * @param companyId
     * @param editDto
     * @return
     */
    int queryEditProductByNameOrNumber(String companyId,ProductEditDto editDto);
}
